package com.sscw.task.dao;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.guaike.core.mybatis.plugins.BaseDAO;
import com.sscw.task.entity.MRecordPinePO;
import com.sscw.task.mapper.MRecordPineMapper;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Repository;

import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.List;

@Repository
@AllArgsConstructor
public class MRecordPineDAO extends BaseDAO<MRecordPineMapper, MRecordPinePO> {

    public List<MRecordPinePO> findCanGetPine(LocalDate startDate, LocalDate endDate) {
        LambdaQueryWrapper<MRecordPinePO> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.eq(MRecordPinePO::getStartDate, startDate);
        queryWrapper.eq(MRecordPinePO::getEndDate, endDate);
        queryWrapper.eq(MRecordPinePO::getIsGet, Boolean.FALSE);
        queryWrapper.last("limit 0,20");
        return getBaseMapper().selectList(queryWrapper);
    }

    public int updateIsGet(List<Long> ids) {
        LambdaUpdateWrapper<MRecordPinePO> updateWrapper = new LambdaUpdateWrapper<>();
        updateWrapper.set(MRecordPinePO::getIsGet, Boolean.TRUE);
        updateWrapper.set(MRecordPinePO::getUpdateUser, -1L);
//        updateWrapper.set(MRecordPinePO::getUpdateTime, LocalDate.now());
        updateWrapper.set(MRecordPinePO::getUpdateTime, LocalDateTime.now());
        updateWrapper.in(MRecordPinePO::getId, ids);
        return getBaseMapper().update(new MRecordPinePO(), updateWrapper);
    }

}
